<?php

/**
 * 
 *******************************************************************************
 * 
 * CLASS [ dbconnection ]
 * 
 *******************************************************************************
 * 
 * Permet de creer des objets representant une connexion
 * a la base de donnees MySQL.
 * 
 *******************************************************************************
 * 
 * @package database
 * @version 20070807
 * @author Stanislas PERRIN <stanislas.perrin@gmail.com> <stan@extramuros.com>
 * 
 * @licence GNU/LGPL v3
 * 
 * 
 * Attention !
 * Cette classe a besoin de la classe debug.class.php qui se trouve ici :
 * http://svn.extramuros.com/libs/debug.class.php
 * 
 */

CLASS dbconnection
{
	#####################################################################
	#
	# PROPRIETES
	#
	#####################################################################

	private $serverAddress = '';
	private $serverPort = '';
	private $baseName = '';
	private $userLogin = '';
	private $userPassword = '';
	
	private $dbConnectionId = false;
	
	
	#####################################################################
	#
	# CONSTRUCTEUR
	#
	#####################################################################

	public function __construct($server='',$port='3306',$login='',$pwd='',$dbName='')
	{
		$result = false;
		
		if ($server != '')
		{
			$this->serverAddress = $server;
			$this->serverPort = $port;
			
			if ($dbName != '')
			{
				$this->baseName = $dbName;
				
				if ($login != '' && $pwd != '')
				{
					$this->userLogin = $login;
					$this->userPassword = $pwd;
					
					// Etablissement de la connexion
					$this->dbConnect();
						
					if ($this->dbConnectionId)
					{
						// choix de la BDD utilisee
						$result = mysql_select_db($this->baseName,$this->getId());
						// if (!$result) throw new debug("impossible d'ouvrir la db",-100);
						if (!$result) throw new debug(mysql_error(),mysql_errno());
					}
				}
			}
		}
		else
		{
			$this->dbConnectionId = false;
		}
	}

	#####################################################################
	#
	# METHODES PUBLIQUES
	#
	#####################################################################
	
	/**
	*
	* getId()
	*
	* @access public
	* @param
	* @return int $this->dbConnectionId
	*
	*/
	
	public function getId()
	{
		if (!$this->dbConnectionId)
		{
			// il n'y a pas d'identifiant de connexion disponible
			// on ouvre une nouvelle connexion
			$this->dbConnect();	
		}
		
		return $this->dbConnectionId;
	}
	
	#####################################################################
	#
	# METHODES PRIVEES
	#
	#####################################################################
	
	/**
	*
	* dbConnect()
	*
	* @access private
	* @param
	* @return
	*
	*/
	
	private function dbConnect()
	{
		$result = false;
		
		$result = @mysql_connect($this->serverAddress.':'.$this->serverPort,$this->userLogin,$this->userPassword);
		if (!$result) throw new debug(mysql_error(),mysql_errno());
		$this->dbConnectionId = $result;
	}
	
}

?>
